package com.vf.s.common.plugins.mqtt;


import org.eclipse.paho.client.mqttv3.MqttCallback;
import org.eclipse.paho.client.mqttv3.IMqttDeliveryToken;
import org.eclipse.paho.client.mqttv3.MqttMessage;

import com.alibaba.fastjson.JSONObject;
import com.jfinal.kit.StrKit;

/**
 * Created by StoneGeek on 2018/6/5.
 * 博客地址：http://www.cnblogs.com/sxkgeek
 * 发布消息的回调类 
 *
 * 必须实现MqttCallback的接口并实现对应的相关接口方法CallBack 类将实现 MqttCallBack。 
 * 每个客户机标识都需要一个回调实例。在此示例中，构造函数传递客户机标识以另存为实例数据。 
 * 在回调中，将它用来标识已经启动了该回调的哪个实例。 
 * 必须在回调类中实现三个方法： 
 *
 *  public void messageArrived(MqttTopic topic, MqttMessage message)接收已经预订的发布。 
 *
 *  public void connectionLost(Throwable cause)在断开连接时调用。 
 *
 *  public void deliveryComplete(MqttDeliveryToken token)) 
 *  接收到已经发布的 QoS 1 或 QoS 2 消息的传递令牌时调用。 
 *  由 MqttClient.connect 激活此回调。 
 */
public class PushCallback implements MqttCallback{
	
    public void connectionLost(Throwable cause) {
        // 连接丢失后，一般在这里面进行重连
        System.out.println("连接断开，可以做重连");
        //AppConfig.mqttPlugin.start();
        //System.out.println("重连");
    }

    public void deliveryComplete(IMqttDeliveryToken token) {
        System.out.println("deliveryComplete---------" + token.isComplete());
    }

    public void messageArrived(String topic, MqttMessage message) throws Exception {
        //System.out.println("接收消息主题 : " + topic);
       // System.out.println("接收消息Qos : " + message.getQos());
    	//1：事件上报； 2；到离站信息
        String qos=new String(message.getPayload());
        try {
        	JSONObject content = JSONObject.parseObject(qos);
    		if(content.containsKey("evt_id")) {
    			String evt_id=content.getString("evt_id");
    			if(StrKit.equals(evt_id,"0")) {
    			}
    			else if(StrKit.equals(evt_id,"1")) {//1：事件上报
    				
    			}
    			else if(StrKit.equals(evt_id,"2")) {//2；到离站信息
    				JSONObject data =(JSONObject) content.get("data");
    				if(data!=null) {
        				
    				}
    			}    			
    		}
        }catch (Exception e) {
		}
    }
}
